
import axios from 'axios'
import store from '@/store'
import router from '@/router'
// baseURL设置/超时时间设置
const instance = axios.create({
  // baseURL: 'http://pcapi-xiaotuxian-front.itheima.net/',
  baseURL: 'https://pcapi-xiaotuxian-front-devtest.itheima.net/',
  timeout: 5000
})

// 通过axios实例设置请求拦截器
instance.interceptors.request.use(config => {
  // 获取vuex中的token
  const { token } = store.state.user.profile
  // 每次发请求时添加请求头
  if (token) config.headers.Authorization = `Bearer ${token}`
  return config
}, err => Promise.reject(err))

// 设置响应拦截器
instance.interceptors.response.use(
  // 成功返回结果
  res => res.data,
  // 失败时
  err => {
    // 判断是否为401token失效
    if (err.response && err.response.status === 401) {
      // 读取路由上的信息并进行转码编译
      const redirectUrl = encodeURIComponent(router.currentRoute.value.fullPath)
      // 往路由上拼接转码后的参数
      router.push('/login?redirectUrl' + redirectUrl)
    }
    // 否则返回错误信息
    return Promise.reject(err)
  }
)
/**
 * @param {String} - url  请求地址
 * @param {String} - method  请求类型
 * @param {Object} - submitData  对象类型，提交数据
 */
const request = (url, method, submitData) => {
  return instance({
    url,
    method,
    // toLowerCase 转小写
    [method.toLowerCase() === 'get' ? 'params' : 'data']: submitData
  })
}

export default request
